home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS077A.dsk / MUSIC COMPUTER.int < prev    next >
Text File  |  2012-02-16  |  6KB  |  142 lines

  1. 0 CALL -936
  2. 1 SPEED=100
  3. 5 GOSUB 32000
  4. 10 GOTO 42
  5. 25 P=S(Z): POKE 0,P: POKE 1,D:CALL 2
  6. 26 COLOR=  RND (C1):X1= RND (20):Y1= RND (20):Z1= RND (40):R1= RND (2)
  7. 27 R2= RND (2)
  8. 28 IF R1=1 THEN 34
  9. 30 IF X1+Y1<20 AND R2=0 THEN HLIN X1,Y1+X1 AT Z1
  10. 31 IF X1+Y1<20 AND R2=1 THEN HLIN X1+20,Y1+X1+20 AT Z1
  11. 32 IF X1+Y1>19 THEN HLIN X1,Y1+20 AT Z1
  12. 33 RETURN 
  13. 34 IF X1+Y1<20 AND R2=0 THEN VLIN X1,Y1+X1 AT Z1
  14. 35 IF X1+Y1<20 AND R2=1 THEN VLIN X1+20,Y1+X1+20 AT Z1
  15. 36 IF X1+Y1>19 THEN VLIN X1,Y1+20 AT Z1
  16. 37 RETURN 
  17. 42 DIM S(28):DIM A(10):SUM=0
  18. 80 PRINT "       *** COMPUTER MUSIC ***"
  19. 81 PRINT 
  20. 82 PRINT "YOU MUST HELP THE COMPUTER COMPOSE":PRINT "ITS (AHEM) GREAT PIECE OF MUSIC."
  21. 84 PRINT :PRINT "THE COMPUTER WILL CONTROL THE TEMPO,":PRINT "BUT YOU MUST HELP THE COMPUTER":PRINT "CHOOSE THE PITCHES AND RHYTHM."
  22. 88 PRINT :PRINT "   YOU MUST SELECT THE RELATIVE":PRINT "WEIGHT THAT A CERTAIN INTERVAL":PRINT "WILL HAVE.  FOR EXAMPLE,"
  23. 90 PRINT "IF YOU WANT OCTAVE LEAPS TO OCCUR":PRINT "MORE FREQUENTLY THAN SKIPS OF":PRINT "A PERFECT FIFTH, TYPE IN A LARGER"
  24. 92 PRINT "NUMBER FOR OCTAVES.":PRINT :PRINT "OKAY NOW, TELL ME THE RELATIVE":PRINT "WEIGHTS OF THE FOLLOWING:"
  25. 94 PRINT 
  26. 96 PRINT "MAJOR SECOND     ";:INPUT A(0):PRINT "MAJOR THIRD      ";:INPUT A(1):PRINT "PERFECT FOURTH   ";:INPUT A(2)
  27. 98 PRINT "PERFECT FIFTH    ";:INPUT A(3):PRINT "MAJOR SIXTH      ";:INPUT A(4):PRINT "MAJOR SEVENTH    ";:INPUT A(5)
  28. 100 PRINT "OCTAVE           ";:INPUT A(6)
  29. 110 SUM=SUM+A(6)+A(5)
  30. 115 PRINT 
  31. 120 PRINT "   NOW CHOOSE HOW LONG YOU WANT":PRINT "THIS MUSIC TO LAST.  WHAT YOU":PRINT "MUST DO IS TYPE IN A NUMBER FROM"
  32. 125 PRINT "1 TO 2000.  THE LARGER THE NUMBER":PRINT "THE LONGER THE MUSIC GOES ON!";:INPUT H
  33. 135 IF H>0 AND H<2001 THEN 150
  34. 140 PRINT "PLEASE TYPE A NUMBER BETWEEN 1 AND":PRINT "2000";:GOTO 125
  35. 150 PRINT 
  36. 160 PRINT "NOW TELL ME THE RELATIVE FREQUENCY":PRINT "OF THE FOLLOWING NOTE VALUES."
  37. 162 PRINT 
  38. 165 PRINT "WHOLE NOTES          ";:INPUT C:PRINT "HALF NOTES           ";:INPUT V:PRINT "QUARTER NOTES        ";:INPUT G
  39. 170 PRINT "1 EIGHTH NOTE        ";:INPUT J:PRINT "2 EIGHTH NOTES       ";:INPUT K:PRINT "2 SIXTEENTH NOTES    ";:INPUT L
  40. 172 PRINT "4 SIXTEENTH NOTES    ";:INPUT Q:PRINT "8 SIXTEENTH NOTES    ";:INPUT U
  41. 175 MSUM=C+V+G+J+K+L+Q+U
  42. 180 V=C+V:G=V+G:J=G+J:K=J+K:L=K+L:Q=Q+L:U=U+Q
  43. 182 PRINT 
  44. 183 PRINT "HOW MANY COLORS DO YOU WANT":PRINT "FOR THE VISUAL DISPLAY (1 TO 16)";:INPUT C1
  45. 184 IF C1<1 OR C1>16 THEN GOTO 188:GOTO 200
  46. 188 PRINT "PLEASE TYPE IN A NUMBER FROM":PRINT "1 THROUGH 16.":GOTO 183
  47. 200 PRINT 
  48. 205 PRINT "YOU ALSO CONTROL HOW OFTEN THE":PRINT "PITCHES CHANGE, AND IN WHICH ":PRINT "DIRECTION THEY MOVE."
  49. 210 PRINT "WITH WHAT FREQUENCIES DO YOU WISH":PRINT "THE FOLLOWING:":PRINT 
  50. 215 PRINT "UPWARD MOVEMENT    ";:INPUT X5
  51. 220 PRINT "DOWNWARD MOVEMENT  ";:INPUT X6
  52. 225 PRINT "SAME PITCH         ";:INPUT X7
  53. 230 PRINT :SUM0=X5+X6+X7:X6=X6+X5
  54. 250 GR 
  55. 300 S(0)=238:S(1)=213:S(2)=202:S(3)=180:S(4)=158:S(5)=148:S(6)=132:S(7)=118:S(8)=106
  56. 310 S(9)=100:S(10)=89:S(11)=78:S(12)=73:S(13)=65:S(14)=58:S(15)=52:S(16)=49:S(17)=44
  57. 320 S(18)=39:S(19)=36:S(20)=32:S(21)=28:S(22)=25:S(23)=24:S(24)=21:S(25)=19:S(26)=18:S(27)=16
  58. 350 FOR M=0 TO H
  59. 400 X= RND (SUM0+1)
  60. 405 IF X<X5 THEN 500:IF X<X6 THEN 600:GOTO 700
  61. 500 Y= RND (SUM+1)
  62. 510 IF Y>A(0) THEN 520:Z=Z+1:IF Z>27 THEN Z=Z-2:GOTO 700
  63. 520 IF Y>A(1) THEN 530:Z=Z+2:IF Z>27 THEN Z=Z-4:GOTO 700
  64. 530 IF Y>A(2) THEN 540:Z=Z+3:IF Z>27 THEN Z=Z-6:GOTO 700
  65. 540 IF Y>A(3) THEN 550:Z=Z+4:IF Z>27 THEN Z=Z-8:GOTO 700
  66. 550 IF Y>A(4) THEN 560:Z=Z+5:IF Z>27 THEN Z=Z-10:GOTO 700
  67. 560 IF Y>A(5) THEN 570:Z=Z+6:IF Z>27 THEN Z=Z-12:GOTO 700
  68. 570 Z=Z+7:IF Z>27 THEN Z=Z-14:GOTO 700
  69. 600 Y= RND (SUM+1)
  70. 610 IF Y>A(0) THEN 620:Z=Z-1:IF Z<0 THEN Z=Z+2:GOTO 700
  71. 620 IF Y>A(1) THEN 630:Z=Z-2:IF Z<0 THEN Z=Z+4:GOTO 700
  72. 630 IF Y>A(2) THEN 640:Z=Z-3:IF Z<0 THEN Z=Z+6:GOTO 700
  73. 640 IF Y>A(3) THEN 650:Z=Z-4:IF Z<0 THEN Z=Z+8:GOTO 700
  74. 650 IF Y>A(4) THEN 660:Z=Z-5:IF Z<0 THEN Z=Z+10:GOTO 700
  75. 660 IF Y>A(5) THEN 670:Z=Z-6:IF Z<0 THEN Z=Z+12:GOTO 700
  76. 670 Z=Z-7:IF Z<0 THEN Z=Z+14:GOTO 700
  77. 700 X= RND (MSUM+1):P=S(Z):X2= RND (2)
  78. 710 IF X>C THEN 730:D=254:GOSUB 25
  79. 720 GOSUB 25
  80. 725 GOTO 1000
  81. 730 IF X>V THEN 740:D=254:GOSUB 25
  82. 735 GOTO 1000
  83. 740 IF X>G THEN 750:D=126:GOSUB 25
  84. 745 GOTO 1000
  85. 750 IF X>J THEN 760:D=63:GOSUB 25
  86. 755 GOTO 1000
  87. 760 IF X>K THEN 790:D=50:GOSUB 25
  88. 770 FOR W=0 TO 13:NEXT W
  89. 775 IF X2=0 AND Z<27 THEN Z=Z+1:IF X2=1 AND Z>0 THEN Z=Z-1:P=S(Z)
  90. 780 GOSUB 25
  91. 785 GOTO 1000
  92. 790 IF X>L THEN 820:D=25:GOSUB 25
  93. 800 FOR W=0 TO 5:NEXT W
  94. 805 IF X2=0 AND Z<27 THEN Z=Z+1:IF X2=1 AND Z>0 THEN Z=Z-1:P=S(Z)
  95. 810 GOSUB 25
  96. 815 GOTO 1000
  97. 820 IF X>Q THEN 870:D=25
  98. 830 FOR E=0 TO 3
  99. 840 GOSUB 25
  100. 845 IF E=3 THEN GOTO 1000
  101. 850 FOR W=0 TO 5:NEXT W
  102. 855 IF X2=0 AND Z<26 THEN Z=Z+2:IF X2=1 AND Z>1 THEN Z=Z-2:P=S(Z)
  103. 860 NEXT E
  104. 865 GOTO 1000
  105. 870 D=25
  106. 880 FOR E=0 TO 7
  107. 890 GOSUB 25
  108. 895 IF E=7 THEN GOTO 1000
  109. 900 FOR W=0 TO 5:NEXT W
  110. 905 IF X2=0 AND Z<25 THEN Z=Z+3:IF X2=1 AND Z>2 THEN Z=Z-3:P=S(Z)
  111. 910 NEXT E
  112. 915 GOTO 1000
  113. 1000 NEXT M
  114. 1005 GOSUB 2000
  115. 1010 PRINT :PRINT 
  116. 1020 PRINT "WOULD YOU LIKE TO TRY IT AGAIN":PRINT "TYPE 0 FOR NO, 1 FOR YES";:INPUT T
  117. 1030 IF T=0 THEN 32010
  118. 1032 TEXT 
  119. 1035 GOTO 81
  120. 2000 REM  *** FINAL CADENCE SUBROUTINE *
  121. 2010 D1= RND (2)
  122. 2020 IF Z<13 THEN Z=10
  123. 2030 IF Z>12 THEN Z=17
  124. 2035 D=254:GOSUB 25
  125. 2036 GOSUB 25
  126. 2040 D=254:Z=Z+1:GOSUB 25
  127. 2045 GOSUB 25
  128. 2050 Z=Z+1:GOSUB 25
  129. 2055 GOSUB 25
  130. 2060 Z=Z+1:GOSUB 25
  131. 2065 GOSUB 25
  132. 2066 GOSUB 25
  133. 2070 IF D1=0 THEN Z=Z+3:IF D1=1 THEN Z=Z-4:GOSUB 25
  134. 2080 GOSUB 25
  135. 2090 GOSUB 25
  136. 2095 GOSUB 25
  137. 2100 RETURN 
  138. 3030 IF X1+Y1<20 AND R2=0 THEN HLIN X1,Y1+X1 AT Z1
  139. 32000  POKE 2,173: POKE 3,48: POKE 4,192: POKE 5,136: POKE 6,208: POKE 7,4: POKE 8,198: POKE 9,1: POKE 10,240
  140. 32005  POKE 11,8: POKE 12,202: POKE 13,208: POKE 14,246: POKE 15,166: POKE 16,0: POKE 17,76: POKE 18,2: POKE 19,0: POKE 20,96:RETURN 
  141. 32010 END 
  142.